/**
 * @param {number[][]} grid
 * @return {number}
 */
var minPathSum = function (grid) {
  let m = grid.length, n = gird[0].length
  const dp = new Array(m).fill().map(item => {
    return new Array(n).fill(0)
  })
  dp[0][0] = grid[0][0]
  for (let i = 0; i < m; i++) {
    for (let j = 0; j < n; j++) {
      if(i === 0 && j !== 0) dp[i][j] = dp[i][j - 1] + grid[i][j]
      else if(j === 0 && i !== 0) dp[i][j] = dp[i - 1][j] + grid[i][j]
      else {
        dp[i][j] = Math.min(dp[i][j - 1], dp[i - 1][j]) + grid[i, j]
      }
    }
  }
  return dp[m - 1][n - 1]
};